﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using BL;
using BE;
using CrystalDecisions.Shared;
using System.Data;

namespace UI.DireccionAcademica
{
    public partial class FrmReporteActaComplementaria : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                llenarComboSemestre();
                llenarComboEscuelaProfesional();
                llenarComboCiclos();
                llenarComboEspecialidad();
            }{ 
                
            
            }

        }
        private void llenarComboSemestre() {
            LabelError.Text = "";
            try
            {
                ReporteNominaComplementaria_BL rnc = new ReporteNominaComplementaria_BL();
                List<Periodo> lista= rnc.ObtenerPeriodos();
                comboSemestre.DataSource = lista;
                comboSemestre.DataTextField = "Semestre";
                comboSemestre.DataValueField = "ID";
                comboSemestre.DataBind();
            }
            catch (Exception ex)
            {
                LabelError.Text=ex.Message;
            }
        
        }
        private void llenarComboEscuelaProfesional()
        {
            LabelError.Text = "";
            try
            {
                ReporteNominaComplementaria_BL rnc = new ReporteNominaComplementaria_BL();
                List<Escuela> lista = rnc.ObtenerEscuela();
                comboEscuela.DataSource = lista;
                comboEscuela.DataTextField = "Descripcion";
                comboEscuela.DataValueField = "ID";
                comboEscuela.DataBind();

            }
            catch (Exception ex)
            {
                LabelError.Text = ex.Message;
            }

        }
        private void llenarComboCiclos()
        {
            LabelError.Text = "";
            try
            {
                ReporteNominaComplementaria_BL rnc = new ReporteNominaComplementaria_BL();
                List<Ciclos> lista = rnc.ObtenerCiclos();
                comboCiclo.DataSource = lista;
                comboCiclo.DataTextField = "Descripcion";
                comboCiclo.DataValueField = "ID";
                comboCiclo.DataBind();
            }
            catch (Exception ex)
            {
                LabelError.Text = ex.Message;
            }

        }

        private void llenarComboEspecialidad() {
            LabelError.Text = "";
            try
            {
                String IDEspecialidad = comboEscuela.SelectedValue.ToString();
                ReporteNominaComplementaria_BL rnc = new ReporteNominaComplementaria_BL();
                List<Especialidad> lista = rnc.ObtenerEspecialidadesPorEscuela(IDEspecialidad);
                comboEspecialidad.DataSource = lista;
                comboEspecialidad.DataTextField = "DESCRIPCCION";
                comboEspecialidad.DataValueField = "ID";
                comboEspecialidad.DataBind();

            }
            catch (Exception ex)
            {

                LabelError.Text = ex.Message;
            }
        
        }

        protected void comboEscuela_SelectedIndexChanged(object sender, EventArgs e)
        {
            LabelError.Text = "";
            try
            {
                String IDEspecialidad = comboEscuela.SelectedValue.ToString();
                llenarComboEspecialidad();
            }
            catch (Exception ex)
            {   
                  LabelError.Text = ex.Message;
            }

        }

        protected void btnGenerar_Click(object sender, EventArgs e)
        {
            if (GenerarReporte()) {
                string script = "AbrirVentana('FrmReporteActaComplementariaPdf2.aspx')";
                ScriptManager.RegisterStartupScript(this, typeof(Page), "popup", script, true);
            };            
        }


        private bool GenerarReporte() {
            LabelError.Text = "";
            try
            {
                ComplementadoscursosBENIGNO reporte = new ComplementadoscursosBENIGNO();

                ReporteNominaComplementaria_BL rnc=new ReporteNominaComplementaria_BL();
                String ciclo = comboCiclo.SelectedValue;
                String especialidad = comboEspecialidad.SelectedValue;
                String semestre = comboSemestre.SelectedItem.Text;
                DataTable lista = rnc.ObtenerDataReporte(ciclo, especialidad, semestre);

                if (lista.Rows.Count == 0)
                {
                    LabelError.Text = "No se encontraron registros";
                    ScriptManager.RegisterStartupScript(this, this.GetType(), "script", "alert('" + "No se encontraron registros :" + "" + "');", true);
                    return false;
                }


                String variaslistas="SI";
                if (lista.Rows.Count > 30)
                {
                    variaslistas = "NO"; 
                }

                reporte.SetDataSource(lista);

                String aniosestuS = "";
                Int32 anioestu = Convert.ToInt32(ciclo) / 2;
                if ((anioestu > 0) && (anioestu <= 2))
                {
                    aniosestuS = "PRIMERO";
                }
                else if((anioestu > 2) && (anioestu <= 4)){aniosestuS = "SEGUNDO";}
                else if ((anioestu > 4) && (anioestu <= 6)) { aniosestuS = "TERCERO"; }
                else if ((anioestu > 6) && (anioestu <= 8)) { aniosestuS = "CUARTO"; }
                else if ((anioestu > 8) && (anioestu <= 10)) { aniosestuS = "QUINTO"; }



                reporte.DataDefinition.FormulaFields["2Hojas"].Text = "'" + variaslistas + "'";

                reporte.DataDefinition.FormulaFields["escue"].Text = "'" + comboEscuela.SelectedItem.Text.Trim() + "'";
                reporte.DataDefinition.FormulaFields["anioacad"].Text = "'" + comboCiclo.SelectedItem.Text.Trim() + "'";
                reporte.DataDefinition.FormulaFields["anioestu"].Text = "'" + aniosestuS + "'";
                reporte.DataDefinition.FormulaFields["semes"].Text = "'" + comboSemestre.SelectedItem.Text.Trim() + "'";
                reporte.DataDefinition.FormulaFields["feta"].Text = "'" + DateTime.Now.ToString() + "'";
                reporte.DataDefinition.FormulaFields["cic"].Text = "'" + comboCiclo.SelectedItem.Text.Trim() + "'";
                reporte.DataDefinition.FormulaFields["espi"].Text = "'" + comboEspecialidad.SelectedItem.Text.Trim() + "'";

                reporte.DataDefinition.FormulaFields["prof1"].Text = "'" + txtDocente1.Text.Trim() + "'";
                reporte.DataDefinition.FormulaFields["prof2"].Text = "'" + txtDocente2.Text.Trim() + "'";
                    

                ExportOptions CrExportOptions;
                DiskFileDestinationOptions CrDiskFileDestinationOptions = new DiskFileDestinationOptions();
                PdfRtfWordFormatOptions CrFormatTypeOptions = new PdfRtfWordFormatOptions();
                String rutaarchivo = System.IO.Path.GetTempFileName() + Guid.NewGuid() + ".pdf";
                CrDiskFileDestinationOptions.DiskFileName = rutaarchivo;

                Session["RutaReporte"] = rutaarchivo;

                
                CrExportOptions = reporte.ExportOptions;
                {
                    CrExportOptions.ExportDestinationType = ExportDestinationType.DiskFile;
                    CrExportOptions.ExportFormatType = ExportFormatType.PortableDocFormat;
                    CrExportOptions.DestinationOptions = CrDiskFileDestinationOptions;

                    CrExportOptions.FormatOptions = CrFormatTypeOptions;
                    
                }
               
                reporte.Export();
                reporte.Close();
                return true;
            }
            catch (Exception ex)
            {
                  LabelError.Text = ex.Message;
                  return false;
            }
        }







    }
}